package dao;

import pojo.Member;
import pojo.MemberRole;

import java.util.List;
import java.util.Map;

public interface MemberDao {

    /**
     * 注册会员
     * @param member
     * @return
     */
    public Integer memberRegister(Member member);

    /**
     * 通过条件查找会员
     * @param member
     * @return
     */
    public Member findMember(Member member);

    /**
     * 通过会员类型编号查询会员类型对象
     * @param MemberRoleCode
     * @return
     */
    /*public MemberRole findMemberRoleByCode(String MemberRoleCode);*/

    /**
     * 充值
     * @param rechargeMoney
     * @param member_id
     * @return
     */
    public Integer recharge(Double rechargeMoney, String member_id);

    /**
     * （按条件）查询所有会员
     * @param member
     * @return
     */
    public List<Member> listMember(Member member);

    /**
     * （按条件）查询所有会员
     * @param member
     * @return
     */
    public Integer countListMember(Member member);

    /**
     * 软删除
     * @param memberId
     * @return
     */
    public Integer delete(String memberId);

    /**
     * 获取所有会员类型
     */
    public List<MemberRole> getAllMemberRole();

    /**
     * 获取所有会员类型名称
     * @return
     */
    public Map<String,String> getAllMemberRoleName();

    /**
     * 更新用户会员类型
     * @param memberId
     * @param memberRoleCode
     */
    public Integer updateMemberRoleCode(String memberId, String memberRoleCode);

    /**
     * 判断会员的类型编号
     * @param money
     * @return
     */
    public String findCode(Double money);

    /**
     * 通过id查找会员
     * @param memberId
     * @return
     */
    public Member findMemberById(String memberId);

    /**
     * 检查电话号码是否存在
     * @param memberPhone
     * @return
     */
    public Boolean checkPhoneExist(String memberPhone);

    /**
     * 修改会员信息
     * @param member
     * @return
     */
    public Integer edit(Member member);

    /**
     * 真删除
     * @param id
     * @return
     */
    public Integer realDelete(String id);

    /**
     * 恢复会员
     * @param memberId
     * @return
     */
    public Integer restore(Integer memberId);

    /**
     * 增加会员积分
     * @param memberId
     * @param orderMoney
     * @return
     */
    public Integer addMemberCount(String memberId, String orderMoney);

    /**
     *  获取积分所对应的会员类型
     * @param memberCount
     * @return
     */
    public MemberRole findRoleByCount(String memberCount);

    /**
     *  更新会员类型
     * @param memberId
     * @param memberRoleCode
     * @return
     */
    public Integer updateMemberRole(String memberId, String memberRoleCode);

    /**
     * 扣除会员余额
     * @param memberId
     * @param payMoney
     * @return
     */
    public Integer subMoney(String memberId, String payMoney);

    /**
     * 根据会员id修改密码
     * @param memberId
     * @param newPassword
     * @return
     */
    public Integer updateMemberPasswordByMemberId(String memberId,String newPassword);






}
